package com.java8;

import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

/**
 * @author :Administrator
 * @description: JDK8中有双冒号的用法，形如Class::methodname，符号左边是调用方法所处的类名，符号右边是调用的静态方法。简单的说，就是逐一传入参数值到某个类的静态方法并调用该静态方法
 * @create date: 2022/4/29 17:55
 */
public class TwoColon {
    List<String> list = Arrays.asList("a", "b", "c", "d");

    public static void main(String[] args) {

    }

    /**
     * Class::function的形式
     * System.out::println 用法
     */
    public void m1() {
        //java7
        for (String a : list) {
            TwoColon.printValue(a);
        }
//        拆分解析
        //下面的方法和上面的方法是等价的
        Consumer<String> methodParam = TwoColon::printValue; //定位到调用方法的参数位置
        list.forEach(s -> methodParam.accept(s));//遍历传送元素-定位处逐一接收传送过来的各元素，并打印

        list.forEach(TwoColon::printValue);     //java8
        // 示例
        list.forEach(System.out::println);
    }

    public static void printValue(String str) {
        System.out.println("print value : " + str);
    }
}
